package service;

import dao.FileDao;
import dao.FileMeta;
import manager.FileManager;

import java.io.File;
import java.util.List;

// 通过这个Service 来描述整个程序的核心业务逻辑
public class SearchService {
    private FileDao fileDao = new FileDao();
    private FileManager fileManager = new FileManager();
    // 使用这个线程来周期性的扫描文件系统
    private Thread t = null;
    // 提供一个初始化操作
    public void init(String basePath) {
        // 初始情况下吧数据库初始化好
        // 把这个操作挪到 扫描中进行了 不占用主线程
//        fileManager.scanAll(new File(basePath));
        fileDao.initDB();
        t = new Thread(() -> {
            while (!t.isInterrupted()) {
                fileManager.scanAll(new File(basePath));
                try {
                    Thread.sleep(60000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                    break;
                }
            }
        });
        t.start();
        System.out.println("[SearchService] 初始化完成");
    }

    // 使用这个方法 让扫描线程停止下来
    public void shutdown() {
        if(t != null) {
            t.interrupt();
        }
    }

    // 提供一个查找功能
    public List<FileMeta> search(String pattern) {
        return fileDao.searchByPattern(pattern);
    }
}
